Unless otherwise indicated, the approaches described in this section are not prior art to the claims of the present application and are not admitted to be prior art by inclusion in this section.
Traditional computer systems include byte-addressable volatile memory (e.g., dynamic random access memory, or DRAM) and block-addressable nonvolatile storage devices such as solid state disks (SSDs) and magnetic disks. A typical program reads data from nonvolatile storage, stores and modifies the data in volatile memory, and then writes the modified data back to nonvolatile storage using block-based commands.
Persistent memory is an emerging technology that offers fast, byte-level access to data in a manner similar to DRAM, but is nonvolatile in nature. Thus, with persistent memory, software applications can access and modify individual bytes of data in-place using regular memory load and store instructions, and at the same time be assured that the data will be preserved and can continue to be accessed after, e.g., an AC (alternating current) power failure or other event that causes the system motherboard to lose or cycle AC power (e.g., a cold or hot reboot).
There are a number of implementations of persistent memory that are based on new physical memory types, such as phase-change memory (PCM) and magnetoresistive RAM. There are also approaches that implement persistent memory using a battery, conventional DRAM, and a conventional nonvolatile storage or memory device. These approaches are collectively referred to herein as “battery-backed persistent memory.” With battery-backed persistent memory, a portion of the computer system's DRAM is allocated and exposed to running applications as persistent memory. This exposed allocation is not “true” persistent memory in the sense that the DRAM itself is still volatile. However, when an AC power loss/cycle event occurs, the contents of the persistent memory allocation in DRAM are saved to the nonvolatile storage device while the computer system continues to run on battery power. Then, when AC power is restored and the system is powered on again, the saved data is read from the nonvolatile storage device and placed back into the persistent memory allocation in DRAM, thereby restoring that data for use by applications.
One type of battery-backed persistent memory, known as “OS/hypervisor-based persistent memory,” relies on the operating system (OS) or hypervisor of the computer system to perform the save and restore operations described above. Additional details regarding the OS/hypervisor-based approach are described in related application D382.
One limitation with persistent memory implementations in general is that they are not explicitly designed to make persistent memory data highly available—in other words, they are not designed to allow the contents of a persistent memory of a first computer system to be restored on, and thus accessible by, a second computer system while the first computer system is in a failed state (e.g., suffering from an AC power failure). As a result, users and applications cannot access that data until the first computer system recovers from the failure and is restarted.